<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box {
            width: 300px;
            height: 400px;
            background-color: #6ff;
            position: fixed;
            right: 5px;
            bottom: 5px;
        }
    </style>
</head>

<body>
    <button class="btn">关闭</button>
    <div class="box"></div>
</body>
<script>
    // 计时器: 每隔固定的事件执行既定的操作(callback)   只要不清除会一直执行

    // 延时器: 延迟一段时间执行既定的操作(callback)   => 只执行一次
    // setTimeout(callback,delayTime,arg1,arg2...argN)
    // callback  回调函数 => 延迟执行的内容
    // delayTime 延迟时间
    // arg1,arg2...argN  如果回调函数需要接收参数 从第三参数开始传入
    // 返回值: 延时器编号

    // 清除延时器
    // clearTimeout(延时器编号)

    // 函数防抖处理   => 如果在同一时间段内,连续调用多次,只执行一次

    var box = document.getElementsByClassName("box")[0];
    var btn = document.getElementsByClassName("btn")[0];

    var timer = null;

    btn.onclick = function () {
        // box.style.background = randColor();  //立即随机

        // 300ms以内如果连续触发 先清除上一个 再启动下一个(最后只会有一个执行)
        clearTimeout(timer);
        timer = setTimeout(function () {
            box.style.background = randColor();
        }, 300);
    }


    // 随机颜色
    // 颜色表示方式    
    // 单词      red orange yellow
    // rgba     rgb(255,255,255)
    // 16进制    #ffffff  (0-f)
    function randColor() {
        var str = "0123456789abcdef";

        var colorStr = "#";
        for (var i = 0; i < 6; i++) {
            var index = Math.floor(Math.random() * str.length);
            var char = str.charAt(index);
            colorStr += char;
        }
        return colorStr;
    }





</script>

</html>